/**
 * 文件下载工具函数
 * 用于处理二进制文件的下载
 */

/**
 * 从二进制数据创建并下载文件
 * @param {Blob} data - 二进制数据
 * @param {string} filename - 下载的文件名
 */
export function downloadFile(data, filename) {
  const blob = new Blob([data]);
  const link = document.createElement('a');
  link.href = URL.createObjectURL(blob);
  link.download = filename;
  link.style.display = 'none';
  document.body.appendChild(link);
  link.click();
  URL.revokeObjectURL(link.href);
  document.body.removeChild(link);
}

/**
 * 从API响应中获取文件名
 * @param {Object} response - Axios 响应对象
 * @param {string} defaultFilename - 默认文件名
 * @returns {string} 文件名
 */
export function getFilenameFromResponse(response, defaultFilename) {
  let filename = defaultFilename;
  
  // 尝试从Content-Disposition头中获取文件名
  const contentDisposition = response.headers?.['content-disposition'];
  if (contentDisposition) {
    const filenameMatch = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
    if (filenameMatch && filenameMatch[1]) {
      filename = filenameMatch[1].replace(/['"]/g, '');
      // 解码URL编码的文件名
      try {
        filename = decodeURIComponent(filename);
      } catch (e) {
        console.warn('Failed to decode filename', e);
      }
    }
  }
  
  return filename;
} 